"""Python 模块导入知识点
===================

模块是 Python 中组织代码的基本单位。一个模块就是一个包含 Python 代码的文件，
可以定义函数、类和变量。模块导入是 Python 中非常重要的特性，它允许我们在
一个模块中使用另一个模块中定义的代码。

Python 提供了多种导入模块的方式，每种方式都有其特定的使用场景和优缺点。
"""

# 1. 基本导入方式
# 使用 import 语句导入整个模块
# 优点：命名空间清晰，不会产生命名冲突
# 缺点：使用时需要加上模块名作为前缀
import time
print("开始执行")
time.sleep(1)  # 调用time模块中的sleep函数，暂停1秒
print("结束执行")

# 2. 从模块中导入特定函数或变量
# 使用 from...import 语句导入模块中的特定成员
# 优点：使用时不需要加模块前缀，代码更简洁
# 缺点：可能产生命名冲突
from time import sleep
print("开始执行")
sleep(1)  # 直接使用sleep函数，无需前缀
print("结束执行")

# 3. 导入模块中的所有公共成员
# 使用 from module import * 导入模块中的所有公共成员（不以_开头的）
# 优点：使用方便，无需前缀
# 缺点：容易产生命名冲突，代码可读性差，不推荐在生产环境中使用
from time import *
print("开始执行")
sleep(1)  # 直接使用sleep函数
print("结束执行")

# 4. 使用别名导入
# 使用 as 关键字为模块或函数定义别名
# 优点：可以避免命名冲突，或者简化长模块名
# 导入模块并设置别名
import time as t
print("开始执行")
t.sleep(1)  # 使用别名t调用sleep函数
print("结束执行")

# 导入函数并设置别名
from time import sleep as sl
print("开始执行")
sl(1)  # 使用别名sl调用sleep函数
print("结束执行")

"""
知识点总结：

1. 模块导入方式
   - import module: 导入整个模块，使用时需加模块名前缀
   - from module import name: 从模块中导入特定成员，使用时无需前缀
   - from module import *: 导入模块中所有公共成员，使用时无需前缀
   - import module as alias: 导入模块并设置别名
   - from module import name as alias: 导入特定成员并设置别名

2. 各种导入方式的比较
   - import module: 最安全的方式，命名空间清晰，推荐使用
   - from module import name: 适用于只需要使用模块中少数几个成员的情况
   - from module import *: 使用方便但容易产生命名冲突，不推荐在生产环境使用
   - 使用别名: 适用于避免命名冲突或简化长模块名的情况

3. 最佳实践
   - 优先使用 import module 方式，保持命名空间清晰
   - 避免使用 from module import *，除非在交互式环境中临时使用
   - 当模块名过长或可能产生命名冲突时，可以使用别名
   - 导入语句通常放在文件顶部，便于管理依赖关系
   - 标准库导入、第三方库导入和本地模块导入应分组并添加注释说明

4. 常见标准库模块
   - time: 时间相关函数
   - os: 操作系统接口
   - sys: 系统相关的参数和函数
   - math: 数学函数
   - random: 随机数生成
   - json: JSON数据处理
   - re: 正则表达式操作
"""